import pandas as pd

data = {
    "id": [101, 102, 103, 104, 105],
    "name": ["Alice", "Bob", "Charlie", "David", "Eve"],
    "math": [88, 92, 95, 70, 85],
    "english": [90, 85, 80, 75, 95],
    "science": [85, 89, 92, 78, 88],
}

df = pd.DataFrame(data, index=["a", "b", "c", "d", "e"])
print(df)
# 1.	使用 iloc 获取 第 2 行第 3 列（Bob 的 math 分数）。
# 2.	使用 loc 获取 索引为 ‘c’ 的学生的英语成绩。
# 3.	使用 iloc 选取 前 3 行的 name 和 math 列。
# 4.	使用 loc 选取 所有数学成绩大于 85 的学生的姓名和数学成绩。
# 5.	使用 iloc 修改 第 4 行的 science 分数为 80。
# 6.	使用 loc 修改 索引为 ‘e’ 的英语成绩为 100。
# 7.	使用 iloc 获取 第 2 到第 4 行，所有列（行切片示例）。
# 8.	使用 loc 获取 索引从 ‘b’ 到 ‘d’，列为 [‘name’, ‘science’]。

# 1. 第 2 行第 3 列（iloc：基于位置）
score1 = df.iloc[1, 2]  # 92
print(score1)

# 2. 索引为 'c' 的学生英语成绩（loc：基于标签）
score2 = df.loc["c", "english"]  # 80
print(score2)

# 3. 前 3 行的 name 和 math 列（iloc）
subset3 = df.iloc[0:3, [1, 2]]
print(subset3)

# 4. 数学成绩大于 85 的学生的姓名和数学成绩（loc + 条件）
subset4 = df.loc[df["math"] > 85, ["name", "math"]]
print(subset4)

# 5. 修改第 4 行的 science 分数为 80（iloc）
df.iloc[3, 4] = 80
print(df)

# 6. 修改索引为 'e' 的英语成绩为 100（loc）
df.loc["e", "english"] = 100
print(df)

# 7. 获取第 2 到第 4 行，所有列（iloc）
subset7 = df.iloc[1:4, :]
print(subset7)

# 8. 索引从 'b' 到 'd'，列为 ['name', 'science']（loc）
subset8 = df.loc["b":"d", ["name", "science"]]
print(subset8)
